package com.atguigu.juc.day03.scene;

import java.util.concurrent.CountDownLatch;

public class Demo01CountdownLatch {

    public static void main(String[] args) throws InterruptedException {
        // 场景设定：六位同学值日，班长锁门
        // 1、设定前置任务数量
        int taskCount = 6;

        // 2、根据前置任务数量创建 CountdownLatch 对象
        CountDownLatch countDownLatch = new CountDownLatch(taskCount);

        for (int i = 0; i < 6; i++) {
            new Thread(()->{
                System.out.println(Thread.currentThread().getName() + " 同学值日完成，离开教室。");

                // 3、每一个前置任务完成都让 CountdownLatch 对象做一次递减操作
                countDownLatch.countDown();

            }, "thread-" + i).start();
        }

        // 4、在前置任务没有完成的情况下，抑制最后一步操作
        countDownLatch.await();
        System.out.println("班长锁门。");
    }

}
